package com.hz.dao;

import com.hz.pojo.Order;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface OrderDao {
    /**
     * 111
     * 根据订单id查询订单信息
     * @param order_code 订单编码
     * @return 返回一个订单对象
     * @throws Exception
     */
    public abstract Order getOrderById(String order_code) throws Exception;


    /**
     * 222
     * 根据用户id查询用户的订单信息（一个用户可以有多个订单）
     * @param user_id
     * @return 订单集合
     * @throws Exception
     */
    public abstract List<Order> getOrderListByUserId(Long user_id) throws Exception;

    /**
     * 333
     * 增加一条新订单，传入订单对象
     * @param order 订单对象
     * @return 受影响行数
     * @throws Exception
     */
    public abstract int addOrder(Order order) throws Exception;

    /**
     * 444
     * 根据订单编码修改订单状态和订单结束时间
     * @param order_code 订单编码
     * @param order_state 订单状态从1（进行中）变成2（已完成）
     * @param wash_end_time 订单结束时间从 null 变成 结束时获取的当前时间
     * @return 受影响行数
     * @throws Exception
     */
    public abstract int updOrder(
            @Param("order_code") String order_code,
            @Param("order_state") long order_state,
            @Param("wash_end_time") String wash_end_time) throws Exception;

    /**
     * 获取订单数量
     * @return
     * @throws Exception
     */
    public abstract int getOrdeCoune()throws Exception;
}
